
#include <iostream>

using namespace std;


template<typename T> class Base{
public:
	int m_i;
	void foo(){
		cout << "Base<T>::foo() --> m_i : " << m_i << endl;
	}
};


template<typename T, typename D> class Derived : public Base<T>{
public:
	void bar(){
//		m_i = 100	err
//		foo();		err
//
//		1.
		Base<T>::m_i = 100;
		Base<T>::foo( );
//		2.
//		this->m_i = 100;
//		this->foo( );
	}
};


int main(){
	Derived<int, double> d;
	d.bar();

	return 0;
}
